# _*_ coding: utf-8 _*_
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# DTCloud360
# QQ:35350428
# 邮件:35350428@qq.com
# 手机：13584935775
# 作者：yu.qian
# 公司网址： http://www.dtcloud360.com/
# Copyright 中亿丰数字科技集团有限公司 2012-2025
# 日期：2023/7/31
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

from .errors import AuthorizationError, RequestError, ResourceError, ValidationError


class LoginError(AuthorizationError):
    """
    登录错误
    """

    def __init__(self):
        self.code = 2
        self.msg = 'Login failed, Please check the user name and password.'
        super(LoginError, self).__init__(self.code, self.msg)


class AppRequestError(RequestError):
    """
    请求错误基类，错误码必须落于1~99之间，包含1和99

    处理诸如：AccessToken缺失或不存在、请求签名错误、请求参数不足、...等请求错误。
    """

    TokenLost = RequestError._CodeMin + 2  # Token缺失
    SignError = RequestError._CodeMin + 3  # 签名错误
    ParamLost = RequestError._CodeMin + 4  # 参数缺失
    ParamFormat = RequestError._CodeMin + 5  # 参数格式错误
    InvalidToken = RequestError._CodeMin + 6  # 无效Token
    ParamRange = RequestError._CodeMin + 7  # 参数超出合法范围
    InvalidTS = RequestError._CodeMin + 8  # 无效的时间戳
    ImageFormat = RequestError._CodeMin + 9  # 无效的图片格式
    InvalidEmail = RequestError._CodeMin + 10  # 无效的邮箱设置
    ParamForbiden = RequestError._CodeMin + 11  # 禁用参数
    ParamDecryptError = RequestError._CodeMin + 12  # 参数解密失败
    ExportError = RequestError._CodeMin + 13  # 导出异常
    XssError = RequestError._CodeMin + 14  # xss异常
    ParamTypeError = RequestError._CodeMin + 15  # 参数类型错误

    def __init__(self, code, msg=None):
        super(AppRequestError, self).__init__(code, msg)


class AppResourceError(ResourceError):
    """
    资源错误基类，错误码必须落于200~299之间，包含200和299

    处理诸如：资源不存在、请求资源过于频繁、上传资源格式不正确等资源异常。
    """

    NotFound = ResourceError._CodeMin + 1  # 资源不存在
    TooBusy = ResourceError._CodeMin + 2  # 请求过于频繁
    InvalidFormat = ResourceError._CodeMin + 3  # 上传资源格式不正确
    Duplicate = ResourceError._CodeMin + 4  # 重复操作相同资源
    DataWriteFail = ResourceError._CodeMin + 5  # 写入数据异常
    UpdateForbid = ResourceError._CodeMin + 6  # 更新操作被拒绝
    PermissionDeny = ResourceError._CodeMin + 7  # 没有权限
    StatusChanged = ResourceError._CodeMin + 8  # 资源状态已变化，当前操作被拒绝
    Forbidden = ResourceError._CodeMin + 9  # 资源被禁用，或者资源状态为无效状态，未启用等
    OutOfGroup = ResourceError._CodeMin + 10  # 用户不在组中
    ThirdPart = ResourceError._CodeMin + 11  # 第三方资源申请失败
    DeleteInhibit = ResourceError._CodeMin + 12  # 资源被引用无法删除
    NoData = ResourceError._CodeMin + 13  # 数据不存在
    Found = ResourceError._CodeMin + 18  # 资源已存在
    CacheMissed = ResourceError._CodeMin + 19  # 缓存不命中
    TooMuch = ResourceError._CodeMin + 20  # 资源数量过多
    DataNotAllowDelete = ResourceError._CodeMin + 22  # 数据不容许删除
    WXUserNotFound = ResourceError._CodeMin + 23  # 微信绑定用户未找到
    WXUserFound = ResourceError._CodeMin + 24  # 微信已绑定用户
    NoInit = ResourceError._CodeMin + 27  # 项目为初始化
    UserLocked = ResourceError._CodeMin + 28  # 账号被锁定
    OutOfLimit = ResourceError._CodeMin + 29  # 导出数据条数超出最大限制


class AppValidationError(ValidationError):
    """
    数据检查错误基类，错误码必须落于400~499之间，包含400和499

    处理诸如：用户输入密码格式错误，两次密码不一致，缺少必要参数等错误。
    """

    OrgEmpty = ValidationError._CodeMin + 1  # 公司名为空
    UserNameEmpty = ValidationError._CodeMin + 2  # 用户名为空
    PwdEmpty = ValidationError._CodeMin + 3  # 密码为空
    UserEmailNotExists = ValidationError._CodeMin + 4  # 用户邮箱不存在
    CaptchaError = ValidationError._CodeMin + 5  # 验证码错误
    SimplePasswd = ValidationError._CodeMin + 6  # 密码过于简单
    PhoneError = ValidationError._CodeMin + 7  # 手机号格式错误
    PwdneqError = ValidationError._CodeMin + 8  # 密码不一致
    PwdpatternError = ValidationError._CodeMin + 9  # 密码格式错误
    EmailError = ValidationError._CodeMin + 10  # 邮箱格式错误
    PhoneExistsError = ValidationError._CodeMin + 11  # 手机号已存在
    EmailExistsError = ValidationError._CodeMin + 12  # 邮箱已存在
    VcodeError = ValidationError._CodeMin + 13  # 短信验证码错误
    EmailServerDisabled = ValidationError._CodeMin + 14  # 邮件服务器不可用
    PortDisabled = ValidationError._CodeMin + 15  # 端口未开放
    ValueTooLength = ValidationError._CodeMin + 16  # 参数值长度过大
    DataDuplicate = ValidationError._CodeMin + 24  # 编号重复不可用
    NameDuplicate = ValidationError._CodeMin + 25  # 名称重复
    OrgNotActive = ValidationError._CodeMin + 26  # 组织状态不可用
    OIDError = ValidationError._CodeMin + 28  # 不合法ID
    InvalidateUrl = ValidationError._CodeMin + 29  # 资源非法
    ExtCodeFormatError = ValidationError._CodeMin + 30  # 外部参数格式错误
    FileTypeError = ValidationError._CodeMin + 31  # 文件类型错误


class AppAuthorizationError(AuthorizationError):
    """
    授权错误基类，错误码必须落于100~199之间，包含100和199

    处理诸如：用户不存在或已存在、密码错误、登录/注册失败、用户/角色权限不足等授权错误。
    """

    OrgNotExists = AuthorizationError._CodeMin + 1  # 公司名不存在
    ExpireToken = AuthorizationError._CodeMin + 2  # Token过期
    PwdError = AuthorizationError._CodeMin + 3  # 密码错误
    UserNotExists = AuthorizationError._CodeMin + 4  # 用户不存在
    UserNameNotExists = AuthorizationError._CodeMin + 5  # 用户名不存在
    InvalidSign = AuthorizationError._CodeMin + 6  # 秘钥签名非法
    OrgExpire = AuthorizationError._CodeMin + 7  # 公司有效期过期
    PrivKeyNotFound = AuthorizationError._CodeMin + 8  # 公司有效期过期
    SSOForbidden = AuthorizationError._CodeMin + 9  # 公司sso登录禁止
    SSOError = AuthorizationError._CodeMin + 10  # 公司sso登录错误
    UserNameFound = AuthorizationError._CodeMin + 11  # 用户名已存在
    WXAuthError = AuthorizationError._CodeMin + 12  # 微信授权失败
    UserStatusStop = AuthorizationError._CodeMin + 13  # 用户已被停用
    WXWorkBindError = AuthorizationError._CodeMin + 14  # 企业微信绑定失败
    DingtalkOrgExist = AuthorizationError._CodeMin + 15  # 钉钉企业已绑定过
    DingtalkSessionNotFound = AuthorizationError._CodeMin + 16  # 钉钉用户session不存在
    DingtalkAuthCodeError = AuthorizationError._CodeMin + 17  # 钉钉免登授权码失效
    DingtalkUserNotFound = AuthorizationError._CodeMin + 18  # 钉钉用户不存在
    NotDingtalkAdminError = AuthorizationError._CodeMin + 19  # 非钉钉企业管理员
